#include "etcd.hpp"
#include <iostream>
#include <chrono>
#include <thread>

// 服务新增回调
void onServiceAdded(const std::string &key, const std::string &value) {
    std::cout << "发现新增服务：" << key << " -> " << value << std::endl;
}

// 服务下线回调
void onServiceRemoved(const std::string &key, const std::string &value) {
    std::cout << "服务下线：" << key << " -> " << value << std::endl;
}

int main() {
    std::string etcd_host = "http://127.0.0.1:2379";
    std::string watch_dir = "/service";

    // 创建Discovery对象
    mag::Discovery::ptr discovery = std::make_shared<mag::Discovery>(
        etcd_host, watch_dir, onServiceAdded, onServiceRemoved
    );

    // 保持监听状态
    std::cout << "开始监听服务变更，按 Ctrl+C 退出..." << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(600));

    return 0;
}






// #include "etcd.hpp"
// #include <gflags/gflags.h>
// #include <thread>

// using namespace mag;

// // 定义命令行参数
// DEFINE_bool(run_mode, false, "程序的运行模式，false-调试；true-发布");
// DEFINE_string(log_file, "", "发布模式下，用于指定日志的输出文件");
// DEFINE_int32(log_level, 0, "发布模式下指定日志等级");

// DEFINE_string(etcd_host, "http://127.0.0.1:2379", "服务注册中心地址");
// DEFINE_string(base_service, "/service", "服务监控根目录");

// void online(const std::string &service_name, const std::string &service_host){
//     LOG_DEBUG("上线服务:{}-{}",service_name,service_host);
// }

// void offline(const std::string &service_name, const std::string &service_host){
//     LOG_DEBUG("下线服务: {}-{}",service_name,service_host);
// }

// int main(int argc, char *argv[]) {
//     // 解析命令行参数
//     google::ParseCommandLineFlags(&argc, &argv, true);

//     // 初始化日志系统
//     init_logger(FLAGS_run_mode, FLAGS_log_file, FLAGS_log_level);

//     // 创建服务发现客户端对象
//     Discovery::ptr dclient = std::make_shared<Discovery>(
//         FLAGS_etcd_host, FLAGS_base_service, online, offline);

//     // 保持程序运行，防止服务监控中断
//     std::this_thread::sleep_for(std::chrono::seconds(600));

//     return 0;
// }
